package com.chen.demo.javase.algorithm.leetcode.editor.cn;
//编写一个函数来查找字符串数组中的最长公共前缀。 
//
// 如果不存在公共前缀，返回空字符串 ""。 
//
// 示例 1: 
//
// 输入: ["flower","flow","flight"]
//输出: "fl"
// 
//
// 示例 2: 
//
// 输入: ["dog","racecar","car"]
//输出: ""
//解释: 输入不存在公共前缀。
// 
//
// 说明: 
//
// 所有输入只包含小写字母 a-z 。 
// Related Topics 字符串 
// 👍 1405 👎 0

public class LongestCommonPrefix {
    public static void main(String[] args) {
        Solution solution = new LongestCommonPrefix().new Solution();
      /*  System.out.println(solution.longestCommonPrefix(new String[]{"flower", "flow", "flight"}));
        System.out.println(solution.longestCommonPrefix(new String[]{"dog", "racecar", "car"}));
        System.out.println(solution.longestCommonPrefix(new String[]{"dog"}));
        System.out.println(solution.longestCommonPrefix(new String[]{"ab", "a"}));
        System.out.println(solution.longestCommonPrefix(new String[]{"dogssss", "dog"}));*/
        System.out.println(solution.longestCommonPrefix(new String[]{"cir", "car"}));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        // 纵向扫描
        public String longestCommonPrefix(String[] strs) {
            if (strs == null || strs.length == 0) {
                return "";
            }
            int endIndex = -1;
            // i 表示字符串数组第一个元素
            // 外层循环，纵向移动œ
            for (int i = 0; i < strs[0].length(); i++) {
                // 内存循环，一次比较每个字符串的每一列是否相等
                for (int j = 1; j < strs.length; j++) {
                    // 出现最短元素，则停止循环
                    if (strs[j - 1].length() <= i || strs[j].length() <= i) {
                        // 最短元素出现
                        return strs[0].substring(0, i);
                    }
                    if (strs[j - 1].charAt(i) != strs[j].charAt(i)) {
                        if (endIndex >= 0) {
                            return strs[0].substring(0, endIndex + 1);
                        } else {
                            return "";
                        }

                    }
                }
                endIndex = i;
            }
            return strs[0].substring(0, endIndex + 1);

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}